home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1999 / MacHack 1999.toast / The Hacks / CD-Rom Drive you crazy / Source / SillyBalls.c < prev   
Encoding:
C/C++ Source or Header  |  1999-06-25  |  2.1 KB  |  102 lines  |  [TEXT/CWIE]

  1. #pragma cplusplus on
  2. #include <iostream>
  3. #include <ata.h>
  4. #include <string.h>
  5.  
  6. static bool    gDoneQ = false;
  7. static pascal void Complete(ataPB *inPB)
  8. {
  9.     long        saveA5 = SetA5((long)inPB->ataIOParamBlock.ataPBClientPtr1);
  10.     
  11.     gDoneQ = true;
  12.     
  13.     SetA5(saveA5);
  14. }
  15.  
  16. void main()
  17. {
  18.  
  19.     std::cout << "init" << std::endl;
  20.     
  21.  
  22.     ataPB                pb;
  23.     ATAPICmdPacket        packet;
  24.     
  25.     memset(&pb,0,sizeof(pb));
  26.     memset(&packet,0,sizeof(packet));
  27.  
  28.     pb.ataIOParamBlock.ataPBVers = 3;
  29.     pb.ataIOParamBlock.ataPBFunctionCode = 1;
  30.     pb.ataIOParamBlock.ataPBIOSpeed = 4;
  31.     pb.ataIOParamBlock.ataPBFlags = 0x8021;
  32.     pb.ataIOParamBlock.ataPBDeviceID = 1;
  33.     pb.ataIOParamBlock.ataPBTimeOut = 0x2710;
  34.     pb.ataIOParamBlock.ataPBCallbackPtr = (ProcPtr)Complete;
  35.     pb.ataIOParamBlock.ataPBClientPtr1 = LMGetCurrentA5();
  36.  
  37.     pb.ataIOParamBlock.ataPBStatusRegister = 0x50;
  38.     pb.ataIOParamBlock.ataPBLogicalBlockSize = 0x200;
  39.  
  40.     pb.ataIOParamBlock.ataPBActualTxCount = 0x12;
  41.     
  42.     pb.ataIOParamBlock.ataPBTaskFile.ataTFSDH = 0xA0;
  43.     pb.ataIOParamBlock.ataPBTaskFile.ataTFCommand = 0xA0;
  44.     pb.ataIOParamBlock.ataPBPacketPtr = &packet;
  45.  
  46.     while(!Button()){
  47.         packet.atapiPacketSize = 12;
  48.         packet.atapiCommandByte[0] = 0x1b00;
  49.         packet.atapiCommandByte[2] = 0x0200;
  50.  
  51.  
  52.         OSErr    err = noErr;
  53.         
  54.         gDoneQ = false;
  55.         err = ataManager(&pb);
  56.         while(!gDoneQ){
  57.         }
  58.         DebugStr("\pDone");
  59.         
  60.         packet.atapiCommandByte[2] = 0x0300;
  61.         
  62.         gDoneQ = false;
  63.         err = ataManager(&pb);
  64.         while(!gDoneQ){
  65.  
  66.         }
  67.         DebugStr("\pDone2");
  68.  
  69.     }
  70. /*    
  71.     memset(&pb,0,sizeof(pb));
  72.     
  73.     
  74.     memset(&packet,0,sizeof(packet));
  75.     packet.atapiPacketSize = 12;
  76.     UInt8*        p = (UInt8*)&packet.atapiCommandByte[0];
  77.     p[0] = 0x1B;
  78.     p[1] = 1;
  79.     p[4] = 3;
  80.  
  81.  
  82.     pb.ataIOParamBlock.ataPBVers = 3;
  83.     pb.ataIOParamBlock.ataPBFunctionCode = 1;        // exec
  84.     pb.ataIOParamBlock.ataPBIOSpeed = 4;    //    ?? ignored for version 3?
  85.     pb.ataIOParamBlock.ataPBFlags = 0x830;    // atapi command immediate
  86.     
  87.     pb.ataIOParamBlock.ataPBDeviceID = 1;
  88.     pb.ataIOParamBlock.ataPBTimeOut = 10000;
  89.     pb.ataIOParamBlock.ataPBClientPtr1 = NULL;
  90.     pb.ataIOParamBlock.ataPBClientPtr2 = NULL;
  91.  
  92.     pb.ataIOParamBlock.ataPBPacketPtr = &packet;
  93.     
  94.     OSErr    err = ataManager(&pb);
  95. */
  96.  
  97.  
  98. }
  99.  
  100.  
  101.  
  102.